import currency from 'currency.js'
export const showAmount = (amount) => {
  return currency(amount, { fromCents: true, symbol: '' }).format() //symbol显示货币的符号
}

// 将金额字符串转换为以分为单位的整数
export const sendAmount = (amount) => {
  // 将输入的金额转换为标准格式，去除两端的空格
  amount = amount.trim()

  // 检查是否包含小数点
  const dotIndex = amount.indexOf('.')

  let amountStr = ''
  if (dotIndex === -1) {
    // 如果不包含小数点，表示是整数，直接在末尾添加两个零
    amountStr = amount + '00'
  } else {
    // 分割整数部分和小数部分
    const intPart = amount.slice(0, dotIndex)
    const decimalPart = amount.slice(dotIndex + 1)

    // 处理小数部分，仅取前两位，不进行四舍五入
    let decimalStr = decimalPart.slice(0, 2)
    if (decimalStr.length === 1) {
      // 如果小数部分只有一位，补一个零
      decimalStr += '0'
    } else if (decimalStr.length === 0) {
      // 如果小数部分为空，补两个零
      decimalStr = '00'
    }

    amountStr = intPart + decimalStr
  }

  // 去除前导零
  amountStr = amountStr.replace(/^0+/, '')

  // 如果结果为空，返回 '0'
  if (amountStr === '') {
    return '0'
  }

  return amountStr
}

import get from 'lodash/get'
import set from 'lodash/set'
/*
money
@param {Ref|Reactive} formDataRef - 传入一个响应式对象(例如：ref({}))或 reactive
@param {string} fieldPath - 需要操作的字段路径，并支持嵌套结构，如 'xxx.price'、'arr[0].postage' 等
@returns {ComputedRef}
*/
export function money(formDataRef, fieldPath) {
  return computed({
    get() {
      // 通过 get() 读出当前字段在 formDataRef 内的值
      const rawVal = get(formDataRef.value, fieldPath)
      // 若没有则默认返回 '0.00'
      if (typeof rawVal !== 'number') {
        return '0.00'
      }
      // 转成元
      return (rawVal / 100).toFixed(2)
    },
    set(newVal) {
      // 将用户在输入框输入的小数(元)转为整数(分)
      const floatVal = parseFloat(newVal)
      const finalVal = !isNaN(floatVal) ? Math.round(floatVal * 100) : 0
      // 通过 set() 写回 formDataRef 的对应路径
      set(formDataRef.value, fieldPath, finalVal)
    },
  })
}
